package com.mcxx.modules.temporary.service;

import com.mcxx.common.exception.BizException;
import com.mcxx.modules.miniSalvation.family.dto.BankAbutmentDTO;
import com.mcxx.modules.temporary.family.dto.TempFamilyDTO;
import com.mcxx.modules.temporary.family.dto.TempMemberCardRtnDTO;
import com.mcxx.modules.temporary.family.dto.TmpFamilyMemberDTO;
import com.mcxx.modules.temporary.order.dto.ApplicationDTO;
import com.mcxx.modules.temporary.order.dto.ApplyRtnDTO;
import com.mcxx.modules.temporary.order.entity.TmpOrderEntity;
import com.mcxx.result.BaseResult;
import com.yinhai.ta404.core.security.vo.UserAccountVo;

import java.util.List;
import java.util.Map;


public interface TempSalvationApplyService {

    BaseResult<ApplyRtnDTO> saveSalvationRequest(ApplicationDTO applyDto, UserAccountVo accountVo) throws BizException;

    void modifyTmpOrder(TmpOrderEntity tmpOrderEntity) throws BizException;


    BaseResult<TempFamilyDTO> queryStateByIdCard(String idcard,UserAccountVo accountVo,String channel);


    BaseResult<Integer> countByIdCardAndReason(String idcard, String reason, String year,UserAccountVo accountVo);


    List<TempMemberCardRtnDTO> queryMemberByCardId(String idcard);


    BaseResult<Map> queryMemberStateByIdCard(String idcard);

    String backupHtml(String orderId,String familyId);

     void cntFamilyMaster(String familyId);

    void verifyApplyMaster(ApplicationDTO applyDto);

    void cntCompleteInfoNum(String familyId);

    void verifyTmpCert(String orderId,String familyId);

    void verifyBackUpHtml(String orderId);

    ApplyRtnDTO tempSaveInHouse(ApplicationDTO applyDto, UserAccountVo accountVo) throws BizException;


    ApplyRtnDTO completeInHouse(ApplicationDTO applyDto, UserAccountVo accountVo);


    void verifyExpireCheck(String orderId);

    Map<String, String> gainBankInfo(BankAbutmentDTO dto, UserAccountVo userAccountVo);

    void delete(TmpFamilyMemberDTO dto, UserAccountVo accountVo);

    void addFamilyMember(TmpFamilyMemberDTO dto,UserAccountVo accountVo);

    void  updateFamilyMember(TmpFamilyMemberDTO dto,UserAccountVo accountVo);

    void changeMemberApply(String familyId, String orderId, Map<String,String> relationshipMap,UserAccountVo accountVo);


    BaseResult<TempFamilyDTO> getPersonInfoByIdCard(String idcard, UserAccountVo curUserAccount, String channel);
}
